// ================================================================
// NVDLA Open Source Project
// 
// Copyright(c) 2016 - 2017 NVIDIA Corporation.  Licensed under the
// NVDLA Open Hardware License; Check "LICENSE" which comes with 
// this distribution for more information.
// ================================================================

// File Name: gec_reg_model.h

#ifndef _GEC_REG_MODEL_H_
#define _GEC_REG_MODEL_H_

#include <systemc.h>
#include <tlm.h>

#include "scsim_common.h"

SCSIM_NAMESPACE_START(clib)
SCSIM_NAMESPACE_END()

SCSIM_NAMESPACE_START(cmod)

// Forward declarating cmacro parsed register model class
class CNVDLA_GEC_REGSET;

class gec_reg_model {
    public:
        gec_reg_model();
        ~gec_reg_model();
        sc_event operation_enable_event_;
        sc_event intr_status_w;
    protected:
//        bool is_there_ongoing_gec_csb_response_;
        CNVDLA_GEC_REGSET *gec_register_group;

        // Register field variables
        uint16_t  feature_num_err_;
        uint8_t   feature_num_err_slices_;
        uint8_t   swreset_swrst_;
        uint8_t   missionerr_type_code_;
        uint16_t  current_counter_value_value_;
        uint8_t   missionerr_index_idx_;
        uint8_t   correctable_threshold_count_;
        uint8_t   missionerr_inject_unlock_value_;
        uint8_t   errslice0_missionerr_enable_err31_;
        uint8_t   errslice0_missionerr_enable_err30_;
        uint8_t   errslice0_missionerr_enable_err29_;
        uint8_t   errslice0_missionerr_enable_err28_;
        uint8_t   errslice0_missionerr_enable_err27_;
        uint8_t   errslice0_missionerr_enable_err26_;
        uint8_t   errslice0_missionerr_enable_err25_;
        uint8_t   errslice0_missionerr_enable_err24_;
        uint8_t   errslice0_missionerr_enable_err23_;
        uint8_t   errslice0_missionerr_enable_err22_;
        uint8_t   errslice0_missionerr_enable_err21_;
        uint8_t   errslice0_missionerr_enable_err20_;
        uint8_t   errslice0_missionerr_enable_err19_;
        uint8_t   errslice0_missionerr_enable_err18_;
        uint8_t   errslice0_missionerr_enable_err17_;
        uint8_t   errslice0_missionerr_enable_err16_;
        uint8_t   errslice0_missionerr_enable_err15_;
        uint8_t   errslice0_missionerr_enable_err14_;
        uint8_t   errslice0_missionerr_enable_err13_;
        uint8_t   errslice0_missionerr_enable_err12_;
        uint8_t   errslice0_missionerr_enable_err11_;
        uint8_t   errslice0_missionerr_enable_err10_;
        uint8_t   errslice0_missionerr_enable_err9_;
        uint8_t   errslice0_missionerr_enable_err8_;
        uint8_t   errslice0_missionerr_enable_err7_;
        uint8_t   errslice0_missionerr_enable_err6_;
        uint8_t   errslice0_missionerr_enable_err5_;
        uint8_t   errslice0_missionerr_enable_err4_;
        uint8_t   errslice0_missionerr_enable_err3_;
        uint8_t   errslice0_missionerr_enable_err2_;
        uint8_t   errslice0_missionerr_enable_err1_;
        uint8_t   errslice0_missionerr_enable_err0_;
        uint8_t   errslice0_missionerr_force_err31_;
        uint8_t   errslice0_missionerr_force_err30_;
        uint8_t   errslice0_missionerr_force_err29_;
        uint8_t   errslice0_missionerr_force_err28_;
        uint8_t   errslice0_missionerr_force_err27_;
        uint8_t   errslice0_missionerr_force_err26_;
        uint8_t   errslice0_missionerr_force_err25_;
        uint8_t   errslice0_missionerr_force_err24_;
        uint8_t   errslice0_missionerr_force_err23_;
        uint8_t   errslice0_missionerr_force_err22_;
        uint8_t   errslice0_missionerr_force_err21_;
        uint8_t   errslice0_missionerr_force_err20_;
        uint8_t   errslice0_missionerr_force_err19_;
        uint8_t   errslice0_missionerr_force_err18_;
        uint8_t   errslice0_missionerr_force_err17_;
        uint8_t   errslice0_missionerr_force_err16_;
        uint8_t   errslice0_missionerr_force_err15_;
        uint8_t   errslice0_missionerr_force_err14_;
        uint8_t   errslice0_missionerr_force_err13_;
        uint8_t   errslice0_missionerr_force_err12_;
        uint8_t   errslice0_missionerr_force_err11_;
        uint8_t   errslice0_missionerr_force_err10_;
        uint8_t   errslice0_missionerr_force_err9_;
        uint8_t   errslice0_missionerr_force_err8_;
        uint8_t   errslice0_missionerr_force_err7_;
        uint8_t   errslice0_missionerr_force_err6_;
        uint8_t   errslice0_missionerr_force_err5_;
        uint8_t   errslice0_missionerr_force_err4_;
        uint8_t   errslice0_missionerr_force_err3_;
        uint8_t   errslice0_missionerr_force_err2_;
        uint8_t   errslice0_missionerr_force_err1_;
        uint8_t   errslice0_missionerr_force_err0_;
        uint8_t   errslice0_missionerr_status_err31_;
        uint8_t   errslice0_missionerr_status_err30_;
        uint8_t   errslice0_missionerr_status_err29_;
        uint8_t   errslice0_missionerr_status_err28_;
        uint8_t   errslice0_missionerr_status_err27_;
        uint8_t   errslice0_missionerr_status_err26_;
        uint8_t   errslice0_missionerr_status_err25_;
        uint8_t   errslice0_missionerr_status_err24_;
        uint8_t   errslice0_missionerr_status_err23_;
        uint8_t   errslice0_missionerr_status_err22_;
        uint8_t   errslice0_missionerr_status_err21_;
        uint8_t   errslice0_missionerr_status_err20_;
        uint8_t   errslice0_missionerr_status_err19_;
        uint8_t   errslice0_missionerr_status_err18_;
        uint8_t   errslice0_missionerr_status_err17_;
        uint8_t   errslice0_missionerr_status_err16_;
        uint8_t   errslice0_missionerr_status_err15_;
        uint8_t   errslice0_missionerr_status_err14_;
        uint8_t   errslice0_missionerr_status_err13_;
        uint8_t   errslice0_missionerr_status_err12_;
        uint8_t   errslice0_missionerr_status_err11_;
        uint8_t   errslice0_missionerr_status_err10_;
        uint8_t   errslice0_missionerr_status_err9_;
        uint8_t   errslice0_missionerr_status_err8_;
        uint8_t   errslice0_missionerr_status_err7_;
        uint8_t   errslice0_missionerr_status_err6_;
        uint8_t   errslice0_missionerr_status_err5_;
        uint8_t   errslice0_missionerr_status_err4_;
        uint8_t   errslice0_missionerr_status_err3_;
        uint8_t   errslice0_missionerr_status_err2_;
        uint8_t   errslice0_missionerr_status_err1_;
        uint8_t   errslice0_missionerr_status_err0_;
        uint8_t   errslice0_missionerr_inject_err31_;
        uint8_t   errslice0_missionerr_inject_err30_;
        uint8_t   errslice0_missionerr_inject_err29_;
        uint8_t   errslice0_missionerr_inject_err28_;
        uint8_t   errslice0_missionerr_inject_err27_;
        uint8_t   errslice0_missionerr_inject_err26_;
        uint8_t   errslice0_missionerr_inject_err25_;
        uint8_t   errslice0_missionerr_inject_err24_;
        uint8_t   errslice0_missionerr_inject_err23_;
        uint8_t   errslice0_missionerr_inject_err22_;
        uint8_t   errslice0_missionerr_inject_err21_;
        uint8_t   errslice0_missionerr_inject_err20_;
        uint8_t   errslice0_missionerr_inject_err19_;
        uint8_t   errslice0_missionerr_inject_err18_;
        uint8_t   errslice0_missionerr_inject_err17_;
        uint8_t   errslice0_missionerr_inject_err16_;
        uint8_t   errslice0_missionerr_inject_err15_;
        uint8_t   errslice0_missionerr_inject_err8_;
        uint8_t   errslice0_missionerr_inject_err7_;
        uint8_t   errslice0_missionerr_inject_err6_;
        uint8_t   errslice0_missionerr_inject_err5_;
        uint8_t   errslice0_missionerr_inject_err4_;
        uint8_t   errslice0_missionerr_inject_err3_;
        uint8_t   errslice0_missionerr_inject_err2_;
        uint8_t   errslice0_missionerr_inject_err1_;
        uint8_t   errslice0_missionerr_inject_err0_;
        uint8_t   errslice0_latenterr_enable_err31_;
        uint8_t   errslice0_latenterr_enable_err30_;
        uint8_t   errslice0_latenterr_enable_err29_;
        uint8_t   errslice0_latenterr_enable_err28_;
        uint8_t   errslice0_latenterr_enable_err27_;
        uint8_t   errslice0_latenterr_enable_err26_;
        uint8_t   errslice0_latenterr_enable_err25_;
        uint8_t   errslice0_latenterr_enable_err24_;
        uint8_t   errslice0_latenterr_enable_err23_;
        uint8_t   errslice0_latenterr_enable_err22_;
        uint8_t   errslice0_latenterr_enable_err21_;
        uint8_t   errslice0_latenterr_enable_err20_;
        uint8_t   errslice0_latenterr_enable_err19_;
        uint8_t   errslice0_latenterr_enable_err18_;
        uint8_t   errslice0_latenterr_enable_err17_;
        uint8_t   errslice0_latenterr_enable_err16_;
        uint8_t   errslice0_latenterr_enable_err15_;
        uint8_t   errslice0_latenterr_enable_err14_;
        uint8_t   errslice0_latenterr_enable_err13_;
        uint8_t   errslice0_latenterr_enable_err12_;
        uint8_t   errslice0_latenterr_enable_err11_;
        uint8_t   errslice0_latenterr_enable_err10_;
        uint8_t   errslice0_latenterr_enable_err9_;
        uint8_t   errslice0_latenterr_enable_err8_;
        uint8_t   errslice0_latenterr_enable_err7_;
        uint8_t   errslice0_latenterr_enable_err6_;
        uint8_t   errslice0_latenterr_enable_err5_;
        uint8_t   errslice0_latenterr_enable_err4_;
        uint8_t   errslice0_latenterr_enable_err3_;
        uint8_t   errslice0_latenterr_enable_err2_;
        uint8_t   errslice0_latenterr_enable_err1_;
        uint8_t   errslice0_latenterr_enable_err0_;
        uint8_t   errslice0_latenterr_force_err31_;
        uint8_t   errslice0_latenterr_force_err30_;
        uint8_t   errslice0_latenterr_force_err29_;
        uint8_t   errslice0_latenterr_force_err28_;
        uint8_t   errslice0_latenterr_force_err27_;
        uint8_t   errslice0_latenterr_force_err26_;
        uint8_t   errslice0_latenterr_force_err25_;
        uint8_t   errslice0_latenterr_force_err24_;
        uint8_t   errslice0_latenterr_force_err23_;
        uint8_t   errslice0_latenterr_force_err22_;
        uint8_t   errslice0_latenterr_force_err21_;
        uint8_t   errslice0_latenterr_force_err20_;
        uint8_t   errslice0_latenterr_force_err19_;
        uint8_t   errslice0_latenterr_force_err18_;
        uint8_t   errslice0_latenterr_force_err17_;
        uint8_t   errslice0_latenterr_force_err16_;
        uint8_t   errslice0_latenterr_force_err15_;
        uint8_t   errslice0_latenterr_force_err14_;
        uint8_t   errslice0_latenterr_force_err13_;
        uint8_t   errslice0_latenterr_force_err12_;
        uint8_t   errslice0_latenterr_force_err11_;
        uint8_t   errslice0_latenterr_force_err10_;
        uint8_t   errslice0_latenterr_force_err9_;
        uint8_t   errslice0_latenterr_force_err8_;
        uint8_t   errslice0_latenterr_force_err7_;
        uint8_t   errslice0_latenterr_force_err6_;
        uint8_t   errslice0_latenterr_force_err5_;
        uint8_t   errslice0_latenterr_force_err4_;
        uint8_t   errslice0_latenterr_force_err3_;
        uint8_t   errslice0_latenterr_force_err2_;
        uint8_t   errslice0_latenterr_force_err1_;
        uint8_t   errslice0_latenterr_force_err0_;
        uint8_t   errslice0_latenterr_status_err31_;
        uint8_t   errslice0_latenterr_status_err30_;
        uint8_t   errslice0_latenterr_status_err29_;
        uint8_t   errslice0_latenterr_status_err28_;
        uint8_t   errslice0_latenterr_status_err27_;
        uint8_t   errslice0_latenterr_status_err26_;
        uint8_t   errslice0_latenterr_status_err25_;
        uint8_t   errslice0_latenterr_status_err24_;
        uint8_t   errslice0_latenterr_status_err23_;
        uint8_t   errslice0_latenterr_status_err22_;
        uint8_t   errslice0_latenterr_status_err21_;
        uint8_t   errslice0_latenterr_status_err20_;
        uint8_t   errslice0_latenterr_status_err19_;
        uint8_t   errslice0_latenterr_status_err18_;
        uint8_t   errslice0_latenterr_status_err17_;
        uint8_t   errslice0_latenterr_status_err16_;
        uint8_t   errslice0_latenterr_status_err15_;
        uint8_t   errslice0_latenterr_status_err14_;
        uint8_t   errslice0_latenterr_status_err13_;
        uint8_t   errslice0_latenterr_status_err12_;
        uint8_t   errslice0_latenterr_status_err11_;
        uint8_t   errslice0_latenterr_status_err10_;
        uint8_t   errslice0_latenterr_status_err9_;
        uint8_t   errslice0_latenterr_status_err8_;
        uint8_t   errslice0_latenterr_status_err7_;
        uint8_t   errslice0_latenterr_status_err6_;
        uint8_t   errslice0_latenterr_status_err5_;
        uint8_t   errslice0_latenterr_status_err4_;
        uint8_t   errslice0_latenterr_status_err3_;
        uint8_t   errslice0_latenterr_status_err2_;
        uint8_t   errslice0_latenterr_status_err1_;
        uint8_t   errslice0_latenterr_status_err0_;
        uint8_t   errslice0_counter_reload_err31_;
        uint8_t   errslice0_counter_reload_err30_;
        uint8_t   errslice0_counter_reload_err29_;
        uint8_t   errslice0_counter_reload_err28_;
        uint8_t   errslice0_counter_reload_err27_;
        uint8_t   errslice0_counter_reload_err26_;
        uint8_t   errslice0_counter_reload_err25_;
        uint8_t   errslice0_counter_reload_err24_;
        uint8_t   errslice0_counter_reload_err23_;
        uint8_t   errslice0_counter_reload_err22_;
        uint8_t   errslice0_counter_reload_err21_;
        uint8_t   errslice0_counter_reload_err20_;
        uint8_t   errslice0_counter_reload_err19_;
        uint8_t   errslice0_counter_reload_err18_;
        uint8_t   errslice0_counter_reload_err17_;
        uint8_t   errslice0_counter_reload_err16_;
        uint8_t   errslice0_counter_reload_err15_;
        uint8_t   errslice0_counter_reload_err14_;
        uint8_t   errslice0_counter_reload_err13_;
        uint8_t   errslice0_counter_reload_err12_;
        uint8_t   errslice0_counter_reload_err11_;
        uint8_t   errslice0_counter_reload_err10_;
        uint8_t   errslice0_counter_reload_err9_;
        uint8_t   errslice0_counter_reload_err8_;
        uint8_t   errslice0_counter_reload_err7_;
        uint8_t   errslice0_counter_reload_err6_;
        uint8_t   errslice0_counter_reload_err5_;
        uint8_t   errslice0_counter_reload_err4_;
        uint8_t   errslice0_counter_reload_err3_;
        uint8_t   errslice0_counter_reload_err2_;
        uint8_t   errslice0_counter_reload_err1_;
        uint8_t   errslice0_counter_reload_err0_;
        uint8_t   errslice1_missionerr_enable_err63_;
        uint8_t   errslice1_missionerr_enable_err62_;
        uint8_t   errslice1_missionerr_enable_err61_;
        uint8_t   errslice1_missionerr_enable_err60_;
        uint8_t   errslice1_missionerr_enable_err59_;
        uint8_t   errslice1_missionerr_enable_err58_;
        uint8_t   errslice1_missionerr_enable_err57_;
        uint8_t   errslice1_missionerr_enable_err56_;
        uint8_t   errslice1_missionerr_enable_err55_;
        uint8_t   errslice1_missionerr_enable_err54_;
        uint8_t   errslice1_missionerr_enable_err53_;
        uint8_t   errslice1_missionerr_enable_err52_;
        uint8_t   errslice1_missionerr_enable_err51_;
        uint8_t   errslice1_missionerr_enable_err50_;
        uint8_t   errslice1_missionerr_enable_err49_;
        uint8_t   errslice1_missionerr_enable_err48_;
        uint8_t   errslice1_missionerr_enable_err47_;
        uint8_t   errslice1_missionerr_enable_err46_;
        uint8_t   errslice1_missionerr_enable_err45_;
        uint8_t   errslice1_missionerr_enable_err44_;
        uint8_t   errslice1_missionerr_enable_err43_;
        uint8_t   errslice1_missionerr_enable_err42_;
        uint8_t   errslice1_missionerr_enable_err41_;
        uint8_t   errslice1_missionerr_enable_err40_;
        uint8_t   errslice1_missionerr_enable_err39_;
        uint8_t   errslice1_missionerr_enable_err38_;
        uint8_t   errslice1_missionerr_enable_err37_;
        uint8_t   errslice1_missionerr_enable_err36_;
        uint8_t   errslice1_missionerr_enable_err35_;
        uint8_t   errslice1_missionerr_enable_err34_;
        uint8_t   errslice1_missionerr_enable_err33_;
        uint8_t   errslice1_missionerr_enable_err32_;
        uint8_t   errslice1_missionerr_force_err63_;
        uint8_t   errslice1_missionerr_force_err62_;
        uint8_t   errslice1_missionerr_force_err61_;
        uint8_t   errslice1_missionerr_force_err60_;
        uint8_t   errslice1_missionerr_force_err59_;
        uint8_t   errslice1_missionerr_force_err58_;
        uint8_t   errslice1_missionerr_force_err57_;
        uint8_t   errslice1_missionerr_force_err56_;
        uint8_t   errslice1_missionerr_force_err55_;
        uint8_t   errslice1_missionerr_force_err54_;
        uint8_t   errslice1_missionerr_force_err53_;
        uint8_t   errslice1_missionerr_force_err52_;
        uint8_t   errslice1_missionerr_force_err51_;
        uint8_t   errslice1_missionerr_force_err50_;
        uint8_t   errslice1_missionerr_force_err49_;
        uint8_t   errslice1_missionerr_force_err48_;
        uint8_t   errslice1_missionerr_force_err47_;
        uint8_t   errslice1_missionerr_force_err46_;
        uint8_t   errslice1_missionerr_force_err45_;
        uint8_t   errslice1_missionerr_force_err44_;
        uint8_t   errslice1_missionerr_force_err43_;
        uint8_t   errslice1_missionerr_force_err42_;
        uint8_t   errslice1_missionerr_force_err41_;
        uint8_t   errslice1_missionerr_force_err40_;
        uint8_t   errslice1_missionerr_force_err39_;
        uint8_t   errslice1_missionerr_force_err38_;
        uint8_t   errslice1_missionerr_force_err37_;
        uint8_t   errslice1_missionerr_force_err36_;
        uint8_t   errslice1_missionerr_force_err35_;
        uint8_t   errslice1_missionerr_force_err34_;
        uint8_t   errslice1_missionerr_force_err33_;
        uint8_t   errslice1_missionerr_force_err32_;
        uint8_t   errslice1_missionerr_status_err63_;
        uint8_t   errslice1_missionerr_status_err62_;
        uint8_t   errslice1_missionerr_status_err61_;
        uint8_t   errslice1_missionerr_status_err60_;
        uint8_t   errslice1_missionerr_status_err59_;
        uint8_t   errslice1_missionerr_status_err58_;
        uint8_t   errslice1_missionerr_status_err57_;
        uint8_t   errslice1_missionerr_status_err56_;
        uint8_t   errslice1_missionerr_status_err55_;
        uint8_t   errslice1_missionerr_status_err54_;
        uint8_t   errslice1_missionerr_status_err53_;
        uint8_t   errslice1_missionerr_status_err52_;
        uint8_t   errslice1_missionerr_status_err51_;
        uint8_t   errslice1_missionerr_status_err50_;
        uint8_t   errslice1_missionerr_status_err49_;
        uint8_t   errslice1_missionerr_status_err48_;
        uint8_t   errslice1_missionerr_status_err47_;
        uint8_t   errslice1_missionerr_status_err46_;
        uint8_t   errslice1_missionerr_status_err45_;
        uint8_t   errslice1_missionerr_status_err44_;
        uint8_t   errslice1_missionerr_status_err43_;
        uint8_t   errslice1_missionerr_status_err42_;
        uint8_t   errslice1_missionerr_status_err41_;
        uint8_t   errslice1_missionerr_status_err40_;
        uint8_t   errslice1_missionerr_status_err39_;
        uint8_t   errslice1_missionerr_status_err38_;
        uint8_t   errslice1_missionerr_status_err37_;
        uint8_t   errslice1_missionerr_status_err36_;
        uint8_t   errslice1_missionerr_status_err35_;
        uint8_t   errslice1_missionerr_status_err34_;
        uint8_t   errslice1_missionerr_status_err33_;
        uint8_t   errslice1_missionerr_status_err32_;
        uint8_t   errslice1_missionerr_inject_err63_;
        uint8_t   errslice1_missionerr_inject_err62_;
        uint8_t   errslice1_missionerr_inject_err61_;
        uint8_t   errslice1_missionerr_inject_err60_;
        uint8_t   errslice1_missionerr_inject_err59_;
        uint8_t   errslice1_missionerr_inject_err58_;
        uint8_t   errslice1_missionerr_inject_err57_;
        uint8_t   errslice1_missionerr_inject_err56_;
        uint8_t   errslice1_missionerr_inject_err55_;
        uint8_t   errslice1_missionerr_inject_err54_;
        uint8_t   errslice1_missionerr_inject_err53_;
        uint8_t   errslice1_missionerr_inject_err52_;
        uint8_t   errslice1_missionerr_inject_err51_;
        uint8_t   errslice1_missionerr_inject_err50_;
        uint8_t   errslice1_missionerr_inject_err49_;
        uint8_t   errslice1_missionerr_inject_err48_;
        uint8_t   errslice1_missionerr_inject_err47_;
        uint8_t   errslice1_missionerr_inject_err46_;
        uint8_t   errslice1_missionerr_inject_err45_;
        uint8_t   errslice1_missionerr_inject_err44_;
        uint8_t   errslice1_missionerr_inject_err43_;
        uint8_t   errslice1_missionerr_inject_err42_;
        uint8_t   errslice1_missionerr_inject_err41_;
        uint8_t   errslice1_missionerr_inject_err40_;
        uint8_t   errslice1_missionerr_inject_err39_;
        uint8_t   errslice1_missionerr_inject_err38_;
        uint8_t   errslice1_missionerr_inject_err37_;
        uint8_t   errslice1_missionerr_inject_err36_;
        uint8_t   errslice1_missionerr_inject_err35_;
        uint8_t   errslice1_missionerr_inject_err34_;
        uint8_t   errslice1_missionerr_inject_err33_;
        uint8_t   errslice1_missionerr_inject_err32_;
        uint8_t   errslice1_latenterr_enable_err63_;
        uint8_t   errslice1_latenterr_enable_err62_;
        uint8_t   errslice1_latenterr_enable_err61_;
        uint8_t   errslice1_latenterr_enable_err60_;
        uint8_t   errslice1_latenterr_enable_err59_;
        uint8_t   errslice1_latenterr_enable_err58_;
        uint8_t   errslice1_latenterr_enable_err57_;
        uint8_t   errslice1_latenterr_enable_err56_;
        uint8_t   errslice1_latenterr_enable_err55_;
        uint8_t   errslice1_latenterr_enable_err54_;
        uint8_t   errslice1_latenterr_enable_err53_;
        uint8_t   errslice1_latenterr_enable_err52_;
        uint8_t   errslice1_latenterr_enable_err51_;
        uint8_t   errslice1_latenterr_enable_err50_;
        uint8_t   errslice1_latenterr_enable_err49_;
        uint8_t   errslice1_latenterr_enable_err48_;
        uint8_t   errslice1_latenterr_enable_err47_;
        uint8_t   errslice1_latenterr_enable_err46_;
        uint8_t   errslice1_latenterr_enable_err45_;
        uint8_t   errslice1_latenterr_enable_err44_;
        uint8_t   errslice1_latenterr_enable_err43_;
        uint8_t   errslice1_latenterr_enable_err42_;
        uint8_t   errslice1_latenterr_enable_err41_;
        uint8_t   errslice1_latenterr_enable_err40_;
        uint8_t   errslice1_latenterr_enable_err39_;
        uint8_t   errslice1_latenterr_enable_err38_;
        uint8_t   errslice1_latenterr_enable_err37_;
        uint8_t   errslice1_latenterr_enable_err36_;
        uint8_t   errslice1_latenterr_enable_err35_;
        uint8_t   errslice1_latenterr_enable_err34_;
        uint8_t   errslice1_latenterr_enable_err33_;
        uint8_t   errslice1_latenterr_enable_err32_;
        uint8_t   errslice1_latenterr_force_err63_;
        uint8_t   errslice1_latenterr_force_err62_;
        uint8_t   errslice1_latenterr_force_err61_;
        uint8_t   errslice1_latenterr_force_err60_;
        uint8_t   errslice1_latenterr_force_err59_;
        uint8_t   errslice1_latenterr_force_err58_;
        uint8_t   errslice1_latenterr_force_err57_;
        uint8_t   errslice1_latenterr_force_err56_;
        uint8_t   errslice1_latenterr_force_err55_;
        uint8_t   errslice1_latenterr_force_err54_;
        uint8_t   errslice1_latenterr_force_err53_;
        uint8_t   errslice1_latenterr_force_err52_;
        uint8_t   errslice1_latenterr_force_err51_;
        uint8_t   errslice1_latenterr_force_err50_;
        uint8_t   errslice1_latenterr_force_err49_;
        uint8_t   errslice1_latenterr_force_err48_;
        uint8_t   errslice1_latenterr_force_err47_;
        uint8_t   errslice1_latenterr_force_err46_;
        uint8_t   errslice1_latenterr_force_err45_;
        uint8_t   errslice1_latenterr_force_err44_;
        uint8_t   errslice1_latenterr_force_err43_;
        uint8_t   errslice1_latenterr_force_err42_;
        uint8_t   errslice1_latenterr_force_err41_;
        uint8_t   errslice1_latenterr_force_err40_;
        uint8_t   errslice1_latenterr_force_err39_;
        uint8_t   errslice1_latenterr_force_err38_;
        uint8_t   errslice1_latenterr_force_err37_;
        uint8_t   errslice1_latenterr_force_err36_;
        uint8_t   errslice1_latenterr_force_err35_;
        uint8_t   errslice1_latenterr_force_err34_;
        uint8_t   errslice1_latenterr_force_err33_;
        uint8_t   errslice1_latenterr_force_err32_;
        uint8_t   errslice1_latenterr_status_err63_;
        uint8_t   errslice1_latenterr_status_err62_;
        uint8_t   errslice1_latenterr_status_err61_;
        uint8_t   errslice1_latenterr_status_err60_;
        uint8_t   errslice1_latenterr_status_err59_;
        uint8_t   errslice1_latenterr_status_err58_;
        uint8_t   errslice1_latenterr_status_err57_;
        uint8_t   errslice1_latenterr_status_err56_;
        uint8_t   errslice1_latenterr_status_err55_;
        uint8_t   errslice1_latenterr_status_err54_;
        uint8_t   errslice1_latenterr_status_err53_;
        uint8_t   errslice1_latenterr_status_err52_;
        uint8_t   errslice1_latenterr_status_err51_;
        uint8_t   errslice1_latenterr_status_err50_;
        uint8_t   errslice1_latenterr_status_err49_;
        uint8_t   errslice1_latenterr_status_err48_;
        uint8_t   errslice1_latenterr_status_err47_;
        uint8_t   errslice1_latenterr_status_err46_;
        uint8_t   errslice1_latenterr_status_err45_;
        uint8_t   errslice1_latenterr_status_err44_;
        uint8_t   errslice1_latenterr_status_err43_;
        uint8_t   errslice1_latenterr_status_err42_;
        uint8_t   errslice1_latenterr_status_err41_;
        uint8_t   errslice1_latenterr_status_err40_;
        uint8_t   errslice1_latenterr_status_err39_;
        uint8_t   errslice1_latenterr_status_err38_;
        uint8_t   errslice1_latenterr_status_err37_;
        uint8_t   errslice1_latenterr_status_err36_;
        uint8_t   errslice1_latenterr_status_err35_;
        uint8_t   errslice1_latenterr_status_err34_;
        uint8_t   errslice1_latenterr_status_err33_;
        uint8_t   errslice1_latenterr_status_err32_;
        uint8_t   errslice1_counter_reload_err63_;
        uint8_t   errslice1_counter_reload_err62_;
        uint8_t   errslice1_counter_reload_err61_;
        uint8_t   errslice1_counter_reload_err60_;
        uint8_t   errslice1_counter_reload_err59_;
        uint8_t   errslice1_counter_reload_err58_;
        uint8_t   errslice1_counter_reload_err57_;
        uint8_t   errslice1_counter_reload_err56_;
        uint8_t   errslice1_counter_reload_err55_;
        uint8_t   errslice1_counter_reload_err54_;
        uint8_t   errslice1_counter_reload_err53_;
        uint8_t   errslice1_counter_reload_err52_;
        uint8_t   errslice1_counter_reload_err51_;
        uint8_t   errslice1_counter_reload_err50_;
        uint8_t   errslice1_counter_reload_err49_;
        uint8_t   errslice1_counter_reload_err48_;
        uint8_t   errslice1_counter_reload_err47_;
        uint8_t   errslice1_counter_reload_err46_;
        uint8_t   errslice1_counter_reload_err45_;
        uint8_t   errslice1_counter_reload_err44_;
        uint8_t   errslice1_counter_reload_err43_;
        uint8_t   errslice1_counter_reload_err42_;
        uint8_t   errslice1_counter_reload_err41_;
        uint8_t   errslice1_counter_reload_err40_;
        uint8_t   errslice1_counter_reload_err39_;
        uint8_t   errslice1_counter_reload_err38_;
        uint8_t   errslice1_counter_reload_err37_;
        uint8_t   errslice1_counter_reload_err36_;
        uint8_t   errslice1_counter_reload_err35_;
        uint8_t   errslice1_counter_reload_err34_;
        uint8_t   errslice1_counter_reload_err33_;
        uint8_t   errslice1_counter_reload_err32_;
        uint8_t   errslice1_missionerr_ecc_correction_dis_err63_;
        uint8_t   errslice2_missionerr_enable_err67_;
        uint8_t   errslice2_missionerr_enable_err66_;
        uint8_t   errslice2_missionerr_enable_err65_;
        uint8_t   errslice2_missionerr_enable_err64_;
        uint8_t   errslice2_missionerr_force_err67_;
        uint8_t   errslice2_missionerr_force_err66_;
        uint8_t   errslice2_missionerr_force_err65_;
        uint8_t   errslice2_missionerr_force_err64_;
        uint8_t   errslice2_missionerr_status_err67_;
        uint8_t   errslice2_missionerr_status_err66_;
        uint8_t   errslice2_missionerr_status_err65_;
        uint8_t   errslice2_missionerr_status_err64_;
        uint8_t   errslice2_missionerr_inject_err65_;
        uint8_t   errslice2_missionerr_inject_err64_;
        uint8_t   errslice2_latenterr_enable_err67_;
        uint8_t   errslice2_latenterr_enable_err66_;
        uint8_t   errslice2_latenterr_enable_err65_;
        uint8_t   errslice2_latenterr_enable_err64_;
        uint8_t   errslice2_latenterr_force_err67_;
        uint8_t   errslice2_latenterr_force_err66_;
        uint8_t   errslice2_latenterr_force_err65_;
        uint8_t   errslice2_latenterr_force_err64_;
        uint8_t   errslice2_latenterr_status_err67_;
        uint8_t   errslice2_latenterr_status_err66_;
        uint8_t   errslice2_latenterr_status_err65_;
        uint8_t   errslice2_latenterr_status_err64_;
        uint8_t   errslice2_counter_reload_err67_;
        uint8_t   errslice2_counter_reload_err66_;
        uint8_t   errslice2_counter_reload_err65_;
        uint8_t   errslice2_counter_reload_err64_;

        // CSB request target socket
        // void csb2gec_b_transport (int ID, NV_MSDEC_csb2xx_16m_secure_be_lvl_t* payload, sc_time& delay);
        // CSB response send function
        // void GecSendCsbResponse(uint32_t date, uint8_t error_id);
        // Register accessing
        bool GecAccessRegister(uint32_t reg_addr, uint32_t & data, bool is_write);
        // Reset
        void GecRegReset();
        // Update configuration from register to variable
        void GecUpdateVariables(CNVDLA_GEC_REGSET *reg_group_ptr);
};
SCSIM_NAMESPACE_END()

#endif
